#define  _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
#include<string>
using namespace std;
//string r;
//string path;
//int f = 1;
//int f2 = 0;
//bool vis[10];
//string formatString(string str, vector<char>& arg) {
//    // write code here
//    string ret;
//    vector<char> r;
//    int pos = 0;
//    for (int i = 0; i < str.size(); i++)
//    {
//        if (str[i] == '%')
//        {
//            if (pos < arg.size())
//            {
//                ret += arg[pos++];
//                i++;
//            }
//
//
//        }
//        else
//            ret += str[i];
//    }
//    while (pos < arg.size())
//    {
//        ret += arg[pos++];
//    }
//    return ret;
//}
//void dfs()
//{
//    if (path.size()>2)
//        return;
//    
//    if (f2)
//        return;
//    if (path.size() == 2)
//    {
//        if (path[0] == '0')
//            return;
//        int s = stoi(path);
//        
//        for (int i = 2; i * i <= s; i++)
//        {
//            if (s % i == 0)
//                f = 0;
//        }
//        if (f)
//        {
//            f2 = 1;
//            return;
//        }
//        f = 1;
//        return;
//    }
//    if (f2)
//        return;
//    /*path += r[pos];
//    vis[pos] = true;
//    dfs(0);
//    vis[pos] = false;
//    path.pop_back();
//    if (f2)
//        return;
//    dfs(pos + 1);
//    if (f2)
//       return;*/
//    for (int i = 0; i < r.size(); i++)
//    {
//        if (vis[i] == false)
//        {
//            path += r[i];
//            vis[i] = true;
//            dfs();
//            path.pop_back();
//            vis[i] = false;
//        }
//        
//    }
//
//}
//bool check(int x)
//{
//    int cp = x;
//    r = to_string(x);
//    dfs();
//    if (f2)
//        return true;
//    return false;
//}
//int main()
//{
//    int ret = 0;
//    int l,r;
//    cin >> l >> r;
//    for (int i = l; i <= r; i++)
//    {
//        if (check(i))
//        {
//            ret++;
//            cout << i << endl;
//        }
//            
//        f = 1;
//        f2 = 0;
//        path.clear();
//        memset(vis, 0, sizeof vis);
//    }
//    cout << ret;
//    return 0;
//}
string s;
int n;
string path;
bool vis[10000];
int m = 0;
string ret;
void dfs(int pos,int x)
{
	if (pos > s.size())
		return;
	if (path.size() == n)
	{
		double r = x / n;
		if (r > m)
		{
			m = r;
			ret = path;
		}
			
		return;
	}
	if (vis[pos] == false)
	{
		path += s[pos];
		vis[pos] = true;
		if (s[pos] == 'C' || s[pos] == 'G')
			dfs(pos + 1, x + 1);
		else
		dfs(pos + 1, x);
		path.pop_back();
		vis[pos] = false;
	}
	

	dfs(pos + 1,x);
}
int main()
{
	cin >> s>>n;
	dfs(0,0);
	cout << ret;
	return 0;
}